home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #5 / Amiga Plus CD - 2000 - No. 5.iso / Tools / Dev / fpc / triton / units / triton.pas next >
Encoding:
Pascal/Delphi Source File  |  2000-01-01  |  45.9 KB  |  1,395 lines

  1. {
  2.     This file is part of the Free Pascal run time library.
  3.  
  4.     A file in Amiga system run time library.
  5.     Copyright (c) 1998-2000 by Nils Sjoholm
  6.     member of the Amiga RTL development team.
  7.  
  8.     See the file COPYING.FPC, included in this distribution,
  9.     for details about the copyright.
  10.  
  11.     This program is distributed in the hope that it will be useful,
  12.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  14.  
  15.  **********************************************************************}
  16. {
  17.     History:
  18.     Added overlay functions for Pchar->Strings, functions
  19.     and procedures.
  20.     14 Jul 2000.
  21.  
  22.     Added MessageBox for error report.
  23.     31 Jul 2000.
  24.  
  25.     nils.sjoholm@mailbox.swipnet.se
  26. }
  27.  
  28. UNIT TRITON;
  29.  
  30. {$I amigaoverlays.inc}
  31.  
  32. INTERFACE
  33.  
  34. uses exec, intuition, graphics, utility, vartags;
  35.  
  36.  
  37.  
  38. {* ------------------------------------------------------------------------------ *}
  39. {* library name and version                                                       *}
  40. {* ------------------------------------------------------------------------------ *}
  41.  
  42. CONST   TRITONNAME        : PChar = 'triton.library';
  43.         TRITON10VERSION   = 1;
  44.         TRITON11VERSION   = 2;
  45.         TRITON12VERSION   = 3;
  46.         TRITON13VERSION   = 4;
  47.         TRITON14VERSION   = 5;
  48.         TRITON20VERSION   = 6;
  49.         TRITONVERSION     = TRITON20VERSION;
  50.  
  51. {* ------------------------------------------------------------------------------ *}
  52. {* Triton Message                                                                 *}
  53. {* ------------------------------------------------------------------------------ *}
  54.  
  55. TYPE
  56.      pTR_Project = ^tTR_Project;
  57.      pTR_App     = ^tTR_App;
  58.  
  59.      pTR_Message = ^tTR_Message;
  60.      tTR_Message = RECORD
  61.          trm_Project   : pTR_Project;   {* the message                  *}
  62.          trm_Id        : ULONG;         {* The object's ID              *}
  63.          trm_Class     : ULONG;         {* The Triton message class     *}
  64.          trm_Data      : ULONG;         {* The class-specific data      *}
  65.          trm_Code      : ULONG;         {* Currently only used BY       *}
  66.                                         {* TRMS_KEYPRESSED              *}
  67.          trm_Pad0      : ULONG;         {* qualifier is only 16 Bit     *}
  68.          trm_Qualifier : ULONG;         {* Qualifiers                   *}
  69.          trm_Seconds   : ULONG;         {* \ Copy of system clock time  *}
  70.          trm_Micros    : ULONG;         {* / (Only where available! IF  *}
  71.                                         {*    not set, seconds is NULL) *}
  72.          trm_App       : pTR_App;
  73.      END;                               {* End of TR_Message            *}
  74.  
  75. {* Data for TROM_NEW *}
  76.      pTROM_NewDataPtr = ^tTROM_NewData;
  77.      tTROM_NewData = record
  78.          {* The following elements are set up for the object (read only) *}
  79.          project    : pTR_Project;     {*  TR_ProjectPtr;  *}
  80.          firstitem  : pTagItem;
  81.          objecttype : ULONG;
  82.          grouptype  : ULONG;
  83.          itemdata   : ULONG;
  84.          backfilltype : ULONG;
  85.          {* The following elements have to be set by the object and read by 
  86. class_DisplayObject *}
  87.          parseargs  : BOOL;
  88.      end;
  89.  
  90.  
  91. {* Data for TROM_INSTALL *}
  92.      pTROM_InstallData = ^tTROM_InstallData;
  93.      tTROM_InstallData = record
  94.          left : ULONG;
  95.          top  : ULONG;
  96.          width : ULONG;
  97.          height : ULONG;
  98.      end;
  99.  
  100.  
  101. {* Data for TROM_SETATTRIBUTE *}
  102.      pTROM_SetAttributeData = ^tTROM_SetAttributeData;
  103.      tTROM_SetAttributeData = record
  104.          attribute : ULONG;
  105.          value     : ULONG;
  106.      end;
  107.  
  108.  
  109. {* Data for TROM_EVENT *}
  110.      pTROM_EventData = ^tTROM_EventData;
  111.      tTROM_EventData = record
  112.          imsg : pIntuiMessage;
  113.      end;
  114.  
  115. {* ------------------------------------------------------------------------------ *}
  116. {* The Application Structure                                                      *}
  117. {* ------------------------------------------------------------------------------ *}
  118.  
  119.      tTR_App = RECORD {* This structure is PRIVATE! *}
  120.          tra_MemPool    : Pointer;       {* The memory pool             *}
  121.          tra_BitMask    : ULONG;         {* Bits to Wait() for          *}
  122.          tra_Name       : STRPTR;        {* Unique name                 *}
  123.      END; {* TR_App *}
  124.  
  125.      pTR_Class = ^tTR_Class;
  126.      tTR_Class = RECORD
  127.          trc_Node     : tMinNode;         {* PRIVATE! *}
  128.          trc_SuperClass : pTR_Class;
  129.      end;
  130.      
  131.  
  132.  
  133.  
  134. {* ------------------------------------------------------------------------------ *}
  135. {* The Dimension Structure                                                        *}
  136. {* ------------------------------------------------------------------------------ *}
  137.  
  138.      pTR_Dimensions = ^tTR_Dimensions;
  139.      tTR_Dimensions = RECORD
  140.          trd_Left          : Word;
  141.          trd_Top           : Word;
  142.          trd_Width         : Word;
  143.          trd_Height        : Word;
  144.          trd_Left2         : Word;
  145.          trd_Top2          : Word;
  146.          trd_Width2        : Word;
  147.          trd_Height2       : Word;
  148.          trd_Zoomed        : BOOL;
  149.          reserved          : ARRAY [0..2] OF Word;
  150.      END; {* TR_Dimensions *}
  151.      
  152.  
  153. {* ////////////////////////////////////////////////////////////////////// *}
  154. {* ///////////////////////////// Default classes, attributes and flags // *}
  155. {* ////////////////////////////////////////////////////////////////////// *}
  156.  
  157.  
  158.      pTROD_Object = ^tTROD_Object;
  159.      tTROD_Object = record
  160.          Node : tMinNode;             {* The node for linking all objects *}
  161.          tr_Class : pTR_Class;        {* The object's class *}
  162.          Project : pTR_Project;    {* The object's project *}
  163.          Reserved : array [0..5] of ULONG;
  164.      end;
  165.      
  166.  
  167.  
  168.      pTROD_DisplayObject = ^tTROD_DisplayObject;
  169.      tTROD_DisplayObject = record
  170.          O           : tTROD_Object;       {* Superclass object data *}
  171.          ID          : ULONG;             {* The object's ID *}
  172.          MinWidth    : ULONG;             {* The precalculated minimum width *}
  173.          MinHeight   : ULONG;             {* The precalculated minimum height *}
  174.          Left        : ULONG;             {* The X coordinate of the object *}
  175.          Top         : ULONG;             {* The Y coordinate of the object *}
  176.          Width       : ULONG;             {* The width of the object *}
  177.          Height      : ULONG;             {* The height of the object *}
  178.          Flags       : ULONG;             {* See below for flags *}
  179.          XResize     : BOOL;              {* Horizontally resizable? *}
  180.          YResize     : BOOL;              {* Vertically resizable? *}
  181.          QuickHelpString : STRPTR;        {* QuickHelp string *}
  182.          Shortcut    : Integer;           {* The object's shortcut *}
  183.          Backfilltype : ULONG;            {* The object's backfill type *}
  184.          Installed   : BOOL;              {* Does the object have an on-screen 
  185. representation? *}
  186.          Reserved    : array [0..3] of ULONG;   {* Private! *}
  187.      end;
  188.    
  189.  
  190. {* Data for TROM_HIT *}
  191.      pTROM_HitData = ^tTROM_HitData;
  192.      tTROM_HitData = record
  193.          x : ULONG;
  194.          y : ULONG;
  195.          tr_object : pTROD_DisplayObject;
  196.      end;
  197.      
  198.  
  199. {* ------------------------------------------------------------------------------ *}
  200. {* The Projects Structure                                                         *}
  201. {* ------------------------------------------------------------------------------ *}
  202.  
  203.      tTR_Project = RECORD
  204.          tro_SC_Object                : tTROD_Object;          {* PRIVATE *}
  205.          trp_App                      : pTR_App;            {* Our application            
  206. *}
  207.          trp_MemPool                  : Pointer;              {* The memory pool *}
  208.          trp_ID                       : ULONG;                {* The project's ID *}
  209.          trp_IDCMPFlags               : ULONG;                {* The IDCMP flags *}
  210.          trp_Window                   : pWindow;            {* The default window *}
  211.          trp_AspectFixing             : Word;                 {* Pixel aspect 
  212. correction factor *}
  213.      END;                                               {* End of TR_Projects               
  214. *}
  215.  
  216. {* Message classes *}
  217. CONST   TRMS_CLOSEWINDOW        = 1;  {* The window should be closed *}
  218.         TRMS_ERROR              = 2;  {* An error occured. Error code in trm_Data *}
  219.         TRMS_NEWVALUE           = 3;  {* Object's VALUE has changed. New VALUE in 
  220. trm_Data *}
  221.         TRMS_ACTION             = 4;  {* Object has triggered an action *}
  222.         TRMS_ICONDROPPED        = 5;  {* Icon dropped over window (ID=0) or DropBox. 
  223. AppMessage* in trm_Data *}
  224.         TRMS_KEYPRESSED         = 6;  {* Key pressed. trm_Data contains ASCII code,  
  225. trm_Code raw code and *}
  226.                                       {* trm_Qualifier contains qualifiers *}
  227.         TRMS_HELP               = 7;  {* The user requested help for the specified ID 
  228. *}
  229.         TRMS_DISKINSERTED       = 8;  {* A disk has been inserted into a drive *}
  230.         TRMS_DISKREMOVED        = 9;  {* A disk has been removed from a drive *}
  231.  
  232.  
  233. {* ////////////////////////////////////////////////////////////////////// *}
  234. {* //////////////////////////////////////////////// Triton error codes // *}
  235. {* ////////////////////////////////////////////////////////////////////// *}
  236.  
  237.         TRER_OK                 = 0;        {* No error *}
  238.  
  239.         TRER_ALLOCMEM           = 1;        {* Not enough memory *}
  240.         TRER_OPENWINDOW         = 2;        {* Can't open window *}
  241.         TRER_WINDOWTOOBIG       = 3;        {* Window would be too big for screen *}
  242.         TRER_DRAWINFO           = 4;        {* Can't get screen's DrawInfo *}
  243.         TRER_OPENFONT           = 5;        {* Can't open font *}
  244.         TRER_CREATEMSGPORT      = 6;        {* Can't create message port *}
  245.         TRER_INSTALLOBJECT      = 7;        {* Can't create an object *}
  246.         TRER_CREATECLASS        = 8;        {* Can't create a class *}
  247.         TRER_NOLOCKPUBSCREEN    = 9;        {* Can't lock public screen *}
  248.         TRER_CREATEMENUS        = 12;       {* Error while creating the menus *}
  249.         TRER_GT_CREATECONTEXT   = 14;       {* Can't create gadget context *}
  250.  
  251.         TRER_MAXERRORNUM        = 15;       {* PRIVATE! *}
  252.  
  253.  
  254. {* ////////////////////////////////////////////////////////////////////// *}
  255. {* /////////////////////////////////////////////////// Object messages // *}
  256. {* ////////////////////////////////////////////////////////////////////// *}
  257.  
  258.         TROM_NEW                = 1;         {* Create object *}
  259.         TROM_INSTALL            = 2;         {* Tell object to install itself in the 
  260. window *}
  261.         TROM_REFRESH            = 4;         {* Refresh object *}
  262.         TROM_REMOVE             = 6;         {* Remove object from window *}
  263.         TROM_DISPOSE            = 7;         {* Dispose an object's private data *}
  264.         TROM_GETATTRIBUTE       = 8;         {* Get an object's attribute *}
  265.         TROM_SETATTRIBUTE       = 9;         {* Set an object's attribute *}
  266.         TROM_EVENT              = 10;        {* IDCMP event *}
  267.         TROM_DISABLED           = 11;        {* Disabled object *}
  268.         TROM_ENABLED            = 12;        {* Enabled object *}
  269.         TROM_KEYDOWN            = 13;        {* Key pressed *}
  270.         TROM_REPEATEDKEYDOWN    = 14;        {* Key pressed repeatedly *}
  271.         TROM_KEYUP              = 15;        {* Key released *}
  272.         TROM_KEYCANCELLED       = 16;        {* Key cancelled *}
  273.         TROM_CREATECLASS        = 17;        {* Create class-specific data *}
  274.         TROM_DISPOSECLASS       = 18;        {* Dispose class-specific data *}
  275.         TROM_HIT                = 22;        {* Find an object for a coordinate pair 
  276. *}
  277.         TROM_ACTIVATE           = 23;        {* Activate an object *}
  278.  
  279.  
  280.         TROM_EVENT_SWALLOWED    = 1;
  281.         TROM_EVENT_CONTINUE     = 0;
  282.  
  283.  
  284. {* ////////////////////////////////////////////////////////////////////// *}
  285. {* ///////////////////////////////////////// Tags for TR_OpenProject() // *}
  286. {* ////////////////////////////////////////////////////////////////////// *}
  287.  
  288. {* Tag bases *}
  289.         TRTG_OAT              = (TAG_USER+$400);  {* Object attribute *}
  290.         TRTG_CLS              = (TAG_USER+$100);  {* Class ID $1 to $2FF *}
  291.         TRTG_OAT2             = (TAG_USER+$80);   {* PRIVATE! *}
  292.         TRTG_PAT              = (TAG_USER);        {* Project attribute *}
  293.  
  294.  
  295. {* Window/Project *}
  296.         TRWI_Title              = (TRTG_PAT+$01); {* STRPTR: The window title *}
  297.         TRWI_Flags              = (TRTG_PAT+$02); {* See below for window flags *}
  298.         TRWI_Underscore         = (TRTG_PAT+$03); {* BYTE *: The underscore for menu 
  299. and gadget shortcuts *}
  300.         TRWI_Position           = (TRTG_PAT+$04); {* Window position,  see below *}
  301.         TRWI_CustomScreen       = (TRTG_PAT+$05); {* STRUCT Screen * *}
  302.         TRWI_PubScreen          = (TRTG_PAT+$06); {* STRUCT Screen *,  must have been 
  303. locked! *}
  304.         TRWI_PubScreenName      = (TRTG_PAT+$07); {* ADDRESS,  Triton is doing the 
  305. locking *}
  306.         TRWI_PropFontAttr       = (TRTG_PAT+$08); {* STRUCT TextAttr *: The 
  307. proportional font *}
  308.         TRWI_FixedWidthFontAttr = (TRTG_PAT+$09); {* STRUCT TextAttr *: The fixed-
  309. width font *}
  310.         TRWI_Backfill           = (TRTG_PAT+$0A); {* The backfill type,  see below *}
  311.         TRWI_ID                 = (TRTG_PAT+$0B); {* ULONG: The window ID *}
  312.         TRWI_Dimensions         = (TRTG_PAT+$0C); {* STRUCT TR_Dimensions * *}
  313.         TRWI_ScreenTitle        = (TRTG_PAT+$0D); {* STRPTR: The screen title *}
  314.         TRWI_QuickHelp          = (TRTG_PAT+$0E); {* BOOL: Quick help active? *}
  315.  
  316. {* Menus *}
  317.         TRMN_Title              = (TRTG_PAT+$65); {* STRPTR: Menu *}
  318.         TRMN_Item               = (TRTG_PAT+$66); {* STRPTR: Menu item *}
  319.         TRMN_Sub                = (TRTG_PAT+$67); {* STRPTR: Menu subitem *}
  320.         TRMN_Flags              = (TRTG_PAT+$68); {* See below for flags *}
  321.  
  322. {* General object attributes *}
  323.         TRAT_ID               = (TRTG_OAT2+$16);  {* The object's/menu's ID *}
  324.         TRAT_Flags            = (TRTG_OAT2+$17);  {* The object's flags *}
  325.         TRAT_Value            = (TRTG_OAT2+$18);  {* The object's value *}
  326.         TRAT_Text             = (TRTG_OAT2+$19);  {* The object's text *}
  327.         TRAT_Disabled         = (TRTG_OAT2+$1A);  {* Disabled object? *}
  328.         TRAT_Backfill         = (TRTG_OAT2+$1B);  {* Backfill pattern *}
  329.         TRAT_MinWidth         = (TRTG_OAT2+$1C);  {* Minimum width *}
  330.         TRAT_MinHeight        = (TRTG_OAT2+$1D);  {* Minimum height *}
  331.  
  332.  
  333. {* ////////////////////////////////////////////////////////////////////// *}
  334. {* ////////////////////////////////////////////////////// Window flags // *}
  335. {* ////////////////////////////////////////////////////////////////////// *}
  336.  
  337.         TRWF_BACKDROP           = $00000001;     {* Create a backdrop borderless 
  338. window *}
  339.         TRWF_NODRAGBAR          = $00000002;     {* Don't use a dragbar *}
  340.         TRWF_NODEPTHGADGET      = $00000004;     {* Don't use a depth-gadget *}
  341.         TRWF_NOCLOSEGADGET      = $00000008;     {* Don't use a close-gadget *}
  342.         TRWF_NOACTIVATE         = $00000010;     {* Don't activate window *}
  343.         TRWF_NOESCCLOSE         = $00000020;     {* Don't send TRMS_CLOSEWINDOW when 
  344. Esc is pressed *}
  345.         TRWF_NOPSCRFALLBACK     = $00000040;     {* Don't fall back onto default 
  346. PubScreen *}
  347.         TRWF_NOZIPGADGET        = $00000080;     {* Don't use a zip-gadget *}
  348.         TRWF_ZIPCENTERTOP       = $00000100;     {* Center the zipped window on the 
  349. title bar *}
  350.         TRWF_NOMINTEXTWIDTH     = $00000200;     {* Minimum window width not according 
  351. to title text *}
  352.         TRWF_NOSIZEGADGET       = $00000400;     {* Don't use a sizing-gadget *}
  353.         TRWF_NOFONTFALLBACK     = $00000800;     {* Don't fall back to topaz.8 *}
  354.         TRWF_NODELZIP           = $00001000;     {* Don't zip the window when Del is 
  355. pressed *}
  356.         TRWF_SIMPLEREFRESH      = $00002000;     {* *** OBSOLETE *** (V3+) *}
  357.         TRWF_ZIPTOCURRENTPOS    = $00004000;     {* Will zip the window at the current 
  358. position (OS3.0+) *}
  359.         TRWF_APPWINDOW          = $00008000;     {* Create an AppWindow without using 
  360. class_dropbox *}
  361.         TRWF_ACTIVATESTRGAD     = $00010000;     {* Activate the first string gadget 
  362. after opening the window *}
  363.         TRWF_HELP               = $00020000;     {* Pressing <Help> will create a 
  364. TRMS_HELP message (V4) *}
  365.         TRWF_SYSTEMACTION       = $00040000;     {* System status messages will be 
  366. sent (V4) *}
  367.  
  368.  
  369. {* ////////////////////////////////////////////////////////////////////// *}
  370. {* //////////////////////////////////////////////////////// Menu flags // *}
  371. {* ////////////////////////////////////////////////////////////////////// *}
  372.  
  373.         TRMF_CHECKIT            = $00000001;     {* Leave space for a checkmark *}
  374.         TRMF_CHECKED            = $00000002;     {* Check the item (includes 
  375. TRMF_CHECKIT) *}
  376.         TRMF_DISABLED           = $00000004;     {* Ghost the menu/item *}
  377.  
  378.  
  379. {* ////////////////////////////////////////////////////////////////////// *}
  380. {* ////////////////////////////////////////////////// Window positions // *}
  381. {* ////////////////////////////////////////////////////////////////////// *}
  382.  
  383.         TRWP_DEFAULT            = 0;              {* Let Triton choose a good position 
  384. *}
  385.         TRWP_BELOWTITLEBAR      = 1;              {* Left side of screen,  below title 
  386. bar *}
  387.         TRWP_CENTERTOP          = 1025;           {* Top of screen,  centered on the 
  388. title bar *}
  389.         TRWP_TOPLEFTSCREEN      = 1026;           {* Top left corner of screen *}
  390.         TRWP_CENTERSCREEN       = 1027;           {* Centered on the screen *}
  391.         TRWP_CENTERDISPLAY      = 1028;           {* Centered on the currently 
  392. displayed clip *}
  393.         TRWP_MOUSEPOINTER       = 1029;           {* Under the mouse pointer *}
  394.         TRWP_ABOVECOORDS        = 2049;           {* Above coordinates from the 
  395. dimensions STRUCT *}
  396.         TRWP_BELOWCOORDS        = 2050;           {* Below coordinates from the 
  397. dimensions STRUCT *}
  398.  
  399.  
  400. {* ////////////////////////////////////////////////////////////////////// *}
  401. {* //////////////////////////////////// Backfill types / System images // *}
  402. {* ////////////////////////////////////////////////////////////////////// *}
  403.  
  404.         TRBF_WINDOWBACK         = $00000000;     {* Window backfill *}
  405.         TRBF_REQUESTERBACK      = $00000001;     {* Requester backfill *}
  406.  
  407.         TRBF_NONE               = $00000002;     {* No backfill (= Fill with 
  408. BACKGROUNDPEN) *}
  409.         TRBF_SHINE              = $00000003;     {* Fill with SHINEPEN *}
  410.         TRBF_SHINE_SHADOW       = $00000004;     {* Fill with SHINEPEN + SHADOWPEN *}
  411.         TRBF_SHINE_FILL         = $00000005;     {* Fill with SHINEPEN + FILLPEN *}
  412.         TRBF_SHINE_BACKGROUND   = $00000006;     {* Fill with SHINEPEN + BACKGROUNDPEN 
  413. *}
  414.         TRBF_SHADOW             = $00000007;     {* Fill with SHADOWPEN *}
  415.         TRBF_SHADOW_FILL        = $00000008;     {* Fill with SHADOWPEN + FILLPEN *}
  416.         TRBF_SHADOW_BACKGROUND  = $00000009;     {* Fill with SHADOWPEN + 
  417. BACKGROUNDPEN *}
  418.         TRBF_FILL               = $0000000A;     {* Fill with FILLPEN *}
  419.         TRBF_FILL_BACKGROUND    = $0000000B;     {* Fill with FILLPEN + BACKGROUNDPEN 
  420. *}
  421.  
  422.         TRSI_USBUTTONBACK       = $00010002;     {* Unselected button backfill *}
  423.         TRSI_SBUTTONBACK        = $00010003;     {* Selected button backfill *}
  424.  
  425.  
  426.  
  427. {* ////////////////////////////////////////////////////////////////////// *}
  428. {* /////////////////////////////////////////////////////// Frame types // *}
  429. {* ////////////////////////////////////////////////////////////////////// *}
  430.  
  431.         { * Copies of the GadTools BBFT_#? types *}
  432.         TRFT_BUTTON       = 1;
  433.         TRFT_RIDGE        = 2;
  434.         TRFT_ICONDROPBOX  = 3;
  435.         { * Triton's low-level frame types *}
  436.         TRFT_XENBUTTON1   = 33;
  437.         TRFT_XENBUTTON2   = 34;
  438.         TRFT_NEXTBUTTON   = 35;
  439.         { * Triton's abstract frame types *}
  440.         TRFT_ABSTRACT_BUTTON      = 65;
  441.         TRFT_ABSTRACT_ICONDROPBOX = 66;
  442.         TRFT_ABSTRACT_FRAMEBOX    = 67;
  443.         TRFT_ABSTRACT_PROGRESS    = 68;
  444.         TRFT_ABSTRACT_GROUPBOX    = 69;
  445.  
  446.  
  447. {* ////////////////////////////////////////////////////////////////////// *}
  448. {* ///////////////////////////////////////////////////////// Pen types // *}
  449. {* ////////////////////////////////////////////////////////////////////// *}
  450.  
  451.         TRPT_SYSTEMPEN   = 0;
  452.         TRPT_GRAPHICSPEN = 1;
  453.         TRPT_TRITONPEN   = 128;
  454.  
  455.         TRTP_NORMUSCORE         = 0;
  456.         TRTP_HIGHUSCORE         = 1;
  457.         TRTP_HALFSHINE          = 2;
  458.         TRTP_HALFSHADOW         = 3;
  459.         TRTP_USSTRINGGADBACK    = 4;
  460.         TRTP_SSTRINGGADBACK     = 5;
  461.         TRTP_USSTRINGGADFRONT   = 6;
  462.         TRTP_SSTRINGGADFRONT    = 7;
  463.  
  464. {* ////////////////////////////////////////////////////////////////////// *}
  465. {* ////////////////////////////////////////////// Display Object flags // *}
  466. {* ////////////////////////////////////////////////////////////////////// *}
  467.  
  468. {* General flags *}
  469.         TROF_RAISED             = $00000001;     {* Raised object *}
  470.         TROF_HORIZ              = $00000002;     {* Horizontal object \ Works 
  471. automatically *}
  472.         TROF_VERT               = $00000004;     {* Vertical object   / in groups *}
  473.         TROF_RIGHTALIGN         = $00000008;     {* Align object to the right border 
  474. if available *}
  475.         TROF_GENERAL_MASK       = $000000FF;     {* PRIVATE *}
  476.  
  477. {* Text flags for different kinds of text-related objects *}
  478.         TRTX_NOUNDERSCORE       = $00000100;     {* Don't interpret underscores *}
  479.         TRTX_HIGHLIGHT          = $00000200;     {* Highlight text *}
  480.         TRTX_3D                 = $00000400;     {* 3D design *}
  481.         TRTX_BOLD               = $00000800;     {* Softstyle 'bold' *}
  482.         TRTX_TITLE              = $00001000;     {* A title (e.g. of a group) *}
  483.         TRTX_MULTILINE          = $00002000;     {* A multi-line text. See 
  484. TR_PrintText() autodoc clip *}
  485.         TRTX_RIGHTALIGN         = TROF_RIGHTALIGN;
  486.         TRTX_CENTER             = $00004000;     {* Center text *}
  487.         TRTX_SELECTED           = $00002000;     {* PRIVATE! *}
  488.  
  489. {* ////////////////////////////////////////////////////////////////////// *}
  490. {* ////////////////////////////////////////////////////// Menu entries // *}
  491. {* ////////////////////////////////////////////////////////////////////// *}
  492.  
  493.         TRMN_BARLABEL           = (-1);           {* A barlabel instead of text *}
  494.  
  495.  
  496. {* ////////////////////////////////////////////////////////////////////// *}
  497. {* /////////////////////////////////////////// Tags for TR_CreateApp() // *}
  498. {* ////////////////////////////////////////////////////////////////////// *}
  499.  
  500.         TRCA_Name               = (TAG_USER+1);
  501.         TRCA_LongName           = (TAG_USER+2);
  502.         TRCA_Info               = (TAG_USER+3);
  503.         TRCA_Version            = (TAG_USER+4);
  504.         TRCA_Release            = (TAG_USER+5);
  505.         TRCA_Date               = (TAG_USER+6);
  506.  
  507.  
  508. {* ////////////////////////////////////////////////////////////////////// *}
  509. {* ///////////////////////////////////////// Tags for TR_EasyRequest() // *}
  510. {* ////////////////////////////////////////////////////////////////////// *}
  511.  
  512.         TREZ_ReqPos             = (TAG_USER+1);
  513.         TREZ_LockProject        = (TAG_USER+2);
  514.         TREZ_Return             = (TAG_USER+3);
  515.         TREZ_Title              = (TAG_USER+4);
  516.         TREZ_Activate           = (TAG_USER+5);
  517.  
  518. {* class_DisplayObject *}
  519.  
  520.         TROB_DisplayObject      = (TRTG_CLS+$3C); {* A basic display object *}
  521.  
  522.         TRDO_QuickHelpString    = (TRTG_OAT+$1E3);
  523.  
  524. {* Flags *}
  525.         TROB_DISPLAYOBJECT_DISABLED    = $00100000; {* Disabled? *}
  526.         TROB_DISPLAYOBJECT_RETURNOK    = $00200000; {* Activate with <Return> *}
  527.         TROB_DISPLAYOBJECT_ESCOK       = $00400000; {* Activate with <Esc> *}
  528.         TROB_DISPLAYOBJECT_TABOK       = $00800000; {* Activate with <Tab> *}
  529.         TROB_DISPLAYOBJECT_SPACE       = $01000000; {* A spacing object? *}
  530.  
  531. {* class_DragItem *}
  532.  
  533.          TROB_DragItem          = (TRTG_CLS+$3E); {* A draggable item *}
  534.  
  535. {* class_Image *}
  536.  
  537.         TROB_Image              = (TRTG_CLS+$3B); {* An image *}
  538.  
  539.         TRIM_BOOPSI             = $00010000;     {* Use a BOOPSI IClass image *}
  540.  
  541. {* class_String *}
  542.  
  543.         TROB_String             = (TRTG_CLS+$37); {* A string gadget *}
  544.         TRST_Filter             = (TRTG_OAT+$1E4);
  545.  
  546.         TRST_INVISIBLE          = $00010000;     {* A password gadget -> invisible 
  547. typing *}
  548.         TRST_NORETURNBROADCAST  = $00020000;     {* <Return> keys will not be 
  549. broadcast to the window *}
  550.         TRST_FLOAT              = $00040000;     {* Separators "." and "," will be 
  551. accepted only once *}
  552.  
  553. {* class_Cycle *}
  554.  
  555.         TROB_Cycle              = (TRTG_CLS+$36); {* A cycle gadget *}
  556.  
  557.         TRCY_MX                 = $00010000;     {* Unfold the cycle gadget to a MX 
  558. gadget *}
  559.         TRCY_RIGHTLABELS        = $00020000;     {* Put the labels to the right of a 
  560. MX gadget *}
  561.  
  562. {* class_Palette *}
  563.  
  564.         TROB_Palette            = (TRTG_CLS+$33); {* A palette gadget *}
  565.  
  566. {* class_DropBox *}
  567.  
  568.         TROB_DropBox            = (TRTG_CLS+$38); {* An icon drop box *}
  569.  
  570. {* class_Group *}
  571.  
  572.         TRGR_Horiz              = (TAG_USER+201);  {* Horizontal group *}
  573.         TRGR_Vert               = (TAG_USER+202);  {* Vertical group *}
  574.         TRGR_End                = (TRTG_OAT2+$4B); {* End of a group *}
  575.  
  576.         TRGR_PROPSHARE          = $00000000;     {* Default: Divide objects 
  577. proportionally *}
  578.         TRGR_EQUALSHARE         = $00000001;     {* Divide objects equally *}
  579.         TRGR_PROPSPACES         = $00000002;     {* Divide spaces proportionally *}
  580.         TRGR_ARRAY              = $00000004;     {* Top-level array group *}
  581.  
  582.         TRGR_ALIGN              = $00000008;     {* Align resizeable objects in 
  583. secondary dimension *}
  584.         TRGR_CENTER             = $00000010;     {* Center unresizeable objects in 
  585. secondary dimension *}
  586.  
  587.         TRGR_FIXHORIZ           = $00000020;     {* Don't allow horizontal resizing *}
  588.         TRGR_FIXVERT            = $00000040;     {* Don't allow vertical resizing *}
  589.         TRGR_INDEP              = $00000080;     {* Group is independant of 
  590. surrounding array *}
  591.  
  592. {* class_Line *}
  593.  
  594.         TROB_Line               = (TRTG_CLS+$2D); {* A simple line *}
  595.  
  596. {* class_Slider *}
  597.  
  598.         TROB_Slider             = (TRTG_CLS+$34); {* A slider gadget *}
  599.  
  600.         TRSL_Min                = (TRTG_OAT+$1DE);
  601.         TRSL_Max                = (TRTG_OAT+$1DF);
  602.  
  603. {* class_Listview *}
  604.  
  605.         TROB_Listview           = (TRTG_CLS+$39); {* A listview gadget *}
  606.  
  607.         TRLV_Top                = (TRTG_OAT+$1E2);
  608.         TRLV_VisibleLines       = (TRTG_OAT+$1E4);
  609.  
  610.         TRLV_READONLY           = $00010000;     {* A read-only list *}
  611.         TRLV_SELECT             = $00020000;     {* You may select an entry *}
  612.         TRLV_SHOWSELECTED       = $00040000;     {* Selected entry will be shown *}
  613.         TRLV_NOCURSORKEYS       = $00080000;     {* Don't use arrow keys *}
  614.         TRLV_NONUMPADKEYS       = $00100000;     {* Don't use numeric keypad keys *}
  615.         TRLV_FWFONT             = $00200000;     {* Use the fixed-width font *}
  616.         TRLV_NOGAP              = $00400000;     {* Don't leave a gap below the list 
  617. *}
  618.  
  619. {* class_Progress *}
  620.  
  621.         TROB_Progress           = (TRTG_CLS+$3A); {* A progress indicator *}
  622.  
  623. {* class_Space *}
  624.  
  625.         TROB_Space              = (TRTG_CLS+$285); {* The spaces class *}
  626.  
  627.         TRST_NONE               = 1;              {* No space *}
  628.         TRST_SMALL              = 2;              {* Small space *}
  629.         TRST_NORMAL             = 3;              {* Normal space (default) *}
  630.         TRST_BIG                = 4;              {* Big space *}
  631.  
  632. {* class_Text *}
  633.  
  634.         TROB_Text               = (TRTG_CLS+$30); {* A line of text *}
  635.  
  636.         TRTX_CLIPPED            = $00010000;     {* Text is clipped *}
  637.  
  638. {* class_Button *}
  639.  
  640.         TROB_Button             = (TRTG_CLS+$31); {* A BOOPSI button gadget *}
  641.  
  642.         TRBU_RETURNOK           = $00010000;     {* <Return> answers the button *}
  643.         TRBU_ESCOK              = $00020000;     {* <Esc> answers the button *}
  644.         TRBU_SHIFTED            = $00040000;     {* Shifted shortcut only *}
  645.         TRBU_UNSHIFTED          = $00080000;     {* Unshifted shortcut only *}
  646.         TRBU_YRESIZE            = $00100000;     {* Button resizeable in Y direction 
  647. *}
  648.         TRBT_TEXT               = 0;              {* Text button *}
  649.         TRBT_GETFILE            = 1;              {* GetFile button *}
  650.         TRBT_GETDRAWER          = 2;              {* GetDrawer button *}
  651.         TRBT_GETENTRY           = 3;              {* GetEntry button *}
  652.  
  653. {* class_CheckBox *}
  654.  
  655.         TROB_CheckBox           = (TRTG_CLS+$2F); {* A checkbox gadget *}
  656.  
  657. {* class_Object *}
  658.  
  659.         TROB_Object             = (TRTG_CLS+$3D); {* A rootclass object *}
  660.  
  661. {* class_Scroller *}
  662.  
  663.         TROB_Scroller           = (TRTG_CLS+$35); {* A scroller gadget *}
  664.  
  665.         TRSC_Total              = (TRTG_OAT+$1E0);
  666.         TRSC_Visible            = (TRTG_OAT+$1E1);
  667.  
  668. {* class_FrameBox *}
  669.  
  670.         TROB_FrameBox           = (TRTG_CLS+$32); {* A framing box *}
  671.  
  672.         TRFB_GROUPING           = $00000001;     {* A grouping box *}
  673.         TRFB_FRAMING            = $00000002;     {* A framing box *}
  674.         TRFB_TEXT               = $00000004;     {* A text container *}
  675.  
  676.  
  677. VAR TritonBase : pLibrary;
  678.     triton_exit : Pointer;
  679.  
  680. PROCEDURE TR_AreaFill(project : pTR_Project; rp : pRastPort; left : ULONG; top : 
  681. ULONG; right : ULONG; bottom : ULONG; typ : ULONG; dummy : POINTER);
  682. FUNCTION TR_AutoRequest(app : pTR_App; lockproject : pTR_Project; wintags : pTagItem) 
  683. : ULONG;
  684. PROCEDURE TR_CloseProject(project : pTR_Project);
  685. PROCEDURE TR_CloseWindowSafely(window : pWindow);
  686. FUNCTION TR_CreateApp(apptags : pTagItem) : pTR_App;
  687. FUNCTION TR_CreateMsg(app : pTR_App) : pTR_Message;
  688. PROCEDURE TR_DeleteApp(app : pTR_App);
  689. FUNCTION TR_DoMethod(obj : pTROD_Object; messageid : ULONG; data : POINTER) : ULONG;
  690. FUNCTION TR_DoMethodClass(obj : pTROD_Object; messageid : ULONG; data : POINTER; 
  691. trclass : pTR_Class) : ULONG;
  692. PROCEDURE TR_DrawFrame(project : pTR_Project; rp : pRastPort; left : WORD; top : WORD; 
  693. width : WORD; height : WORD; typ : WORD; inverted : BOOLEAN);
  694. FUNCTION TR_EasyRequest(app : pTR_App; bodyfmt : pCHAR; gadfmt : pCHAR; taglist : 
  695. pTagItem) : ULONG;
  696. FUNCTION TR_FirstOccurance(ch : BYTE; str : pCHAR) : LONGINT;
  697. FUNCTION TR_FrameBorderHeight(project : pTR_Project; typ : WORD) : ULONG;
  698. FUNCTION TR_FrameBorderWidth(project : pTR_Project; typ : WORD) : ULONG;
  699. FUNCTION TR_GetAttribute(project : pTR_Project; ID : ULONG; attribute : ULONG) : 
  700. ULONG;
  701. FUNCTION TR_GetErrorString(num : WORD) : pCHAR;
  702. FUNCTION TR_GetLastError(app : pTR_App) : WORD;
  703. FUNCTION TR_GetMsg(app : pTR_App) : pTR_Message;
  704. FUNCTION TR_GetPen(project : pTR_Project; pentype : ULONG; pendata : ULONG) : ULONG;
  705. PROCEDURE TR_LockProject(project : pTR_Project);
  706. FUNCTION TR_LockScreen(project : pTR_Project) : pScreen;
  707. FUNCTION TR_NumOccurances(ch : BYTE; str : pCHAR) : LONGINT;
  708. FUNCTION TR_ObtainWindow(project : pTR_Project) : pWindow;
  709. FUNCTION TR_OpenProject(app : pTR_App; taglist : pTagItem) : pTR_Project;
  710. PROCEDURE TR_PrintText(project : pTR_Project; rp : pRastPort; txt : pCHAR; x : ULONG; 
  711. y : ULONG; width : ULONG; flags : ULONG);
  712. PROCEDURE TR_ReleaseWindow(window : pWindow);
  713. PROCEDURE TR_ReplyMsg(message : pTR_Message);
  714. FUNCTION TR_SendMessage(project : pTR_Project; objectid : ULONG; messageid : ULONG; 
  715. messagedata : POINTER) : ULONG;
  716. PROCEDURE TR_SetAttribute(project : pTR_Project; ID : ULONG; attribute : ULONG; value 
  717. : ULONG);
  718. FUNCTION TR_TextHeight(project : pTR_Project; txt : pCHAR; flags : ULONG) : ULONG;
  719. FUNCTION TR_TextWidth(project : pTR_Project; txt : pCHAR; flags : ULONG) : ULONG;
  720. PROCEDURE TR_UnlockProject(project : pTR_Project);
  721. PROCEDURE TR_UnlockScreen(screen : pScreen);
  722. FUNCTION TR_Wait(app : pTR_App; otherbits : ULONG) : ULONG;
  723.  
  724. {$ifdef amiga_overlays}
  725.  
  726. FUNCTION TR_EasyRequest(app : pTR_App; bodyfmt : pCHAR; gadfmt : String; taglist : 
  727. pTagItem) : ULONG;
  728. FUNCTION TR_EasyRequest(app : pTR_App; bodyfmt : String; gadfmt : pCHAR; taglist : 
  729. pTagItem) : ULONG;
  730. FUNCTION TR_EasyRequest(app : pTR_App; bodyfmt : String; gadfmt : String; taglist : 
  731. pTagItem) : ULONG;
  732. FUNCTION TR_FirstOccurance(ch : BYTE; str : String) : LONGINT;
  733. FUNCTION TR_NumOccurances(ch : BYTE; str : String) : LONGINT;
  734. PROCEDURE TR_PrintText(project : pTR_Project; rp : pRastPort; txt : String; x : ULONG; 
  735. y : ULONG; width : ULONG; flags : ULONG);
  736. FUNCTION TR_TextHeight(project : pTR_Project; txt : String; flags : ULONG) : ULONG;
  737. FUNCTION TR_TextWidth(project : pTR_Project; txt : String; flags : ULONG) : ULONG;
  738.  
  739. {$endif}
  740.  
  741. {  This are a few support functions for triton.
  742.    Could be handy.
  743. }
  744.  
  745. procedure TR_Disable(p : pTR_Project; id : Longint);
  746. procedure TR_Enable(p : pTR_Project; id : Longint);
  747. function TR_GetCheckBox(p : pTR_Project; id : Longint): boolean;
  748. function TR_GetSTRPTR(p : pTR_Project; id : Longint): PChar;
  749. function TR_GetValue(p : pTR_Project; gadid : Longint): Longint;
  750. procedure TR_SetCheckBox(p : pTR_Project; id : Longint; onoff : boolean);
  751. procedure TR_SetString(p : pTR_Project; id : Longint; txt : PChar);
  752. procedure TR_SetText(p : pTR_Project; id : Longint; txt : PChar);
  753. procedure TR_SetValue(p : pTR_Project; id : Longint; value : Longint);
  754. procedure TR_SetWindowTitle(p : pTR_Project; thetitle : PChar);
  755. procedure TR_UpdateListView(p : pTR_Project; gadid : Longint; thelist: pList);
  756.  
  757. {$ifdef amiga_overlays}
  758.  
  759. function TR_GetString(p : pTR_Project; id : Longint): String;
  760. procedure TR_SetString(p : pTR_Project; id : Longint; txt : String);
  761. procedure TR_SetText(p : pTR_Project; id : Longint; txt : string);
  762. procedure TR_SetWindowTitle(p : pTR_Project; thetitle : string);
  763.  
  764. {$endif}
  765.  
  766. IMPLEMENTATION
  767.  
  768. uses msgbox
  769. {$ifdef amiga_overlays}
  770. ,pastoc
  771. {$endif}
  772. ;
  773.  
  774. {$ifdef amiga_overlays}
  775.  
  776. function TR_GetString(p : pTR_Project; id : Longint): String;
  777. var
  778.     temp : Longint;
  779. begin
  780.     temp := TR_GetAttribute(p,id,0);
  781.     TR_GetString := strpas(PChar(Pointer(temp)));
  782. end;
  783.  
  784. procedure TR_SetString(p : pTR_Project; id : Longint; txt : String);
  785. begin
  786.     TR_SetAttribute(p,id,0,Longstr(txt));
  787. end;
  788.  
  789. procedure TR_SetText(p : pTR_Project; id : Longint; txt : string);
  790. begin
  791.     TR_SetAttribute(p,id,TRAT_Text,Longstr(txt));
  792. end;
  793.  
  794. procedure TR_SetWindowTitle(p : pTR_Project; thetitle : string);
  795. begin
  796.     TR_SetAttribute(p,0,TRWI_Title,Longstr(thetitle));
  797. end;
  798.  
  799. FUNCTION TR_EasyRequest(app : pTR_App; bodyfmt : PChar; gadfmt : String; taglist : 
  800. pTagItem) : ULONG;
  801. begin
  802.     TR_EasyRequest := TR_EasyRequest(app,bodyfmt,pas2c(gadfmt),taglist);
  803. end;
  804.  
  805. FUNCTION TR_EasyRequest(app : pTR_App; bodyfmt : String; gadfmt : PChar; taglist : 
  806. pTagItem) : ULONG;
  807. begin
  808.     TR_EasyRequest := TR_EasyRequest(app,pas2c(bodyfmt),gadfmt,taglist);
  809. end;
  810.  
  811. FUNCTION TR_EasyRequest(app : pTR_App; bodyfmt : String; gadfmt : String; taglist : 
  812. pTagItem) : ULONG;
  813. begin
  814.     TR_EasyRequest := TR_EasyRequest(app,pas2c(bodyfmt),pas2c(gadfmt),taglist);
  815. end;
  816.  
  817. FUNCTION TR_FirstOccurance(ch : BYTE; str : String) : LONGINT;
  818. BEGIN
  819.     TR_FirstOccurance := TR_FirstOccurance(ch, pas2c(str));
  820. END;
  821.  
  822. FUNCTION TR_NumOccurances(ch : BYTE; str : String) : LONGINT;
  823. BEGIN
  824.     TR_NumOccurances := TR_NumOccurances(ch, pas2c(str));
  825. END;
  826.  
  827. PROCEDURE TR_PrintText(project : pTR_Project; rp : pRastPort; txt : String; x : ULONG; 
  828. y : ULONG; width : ULONG; flags : ULONG);
  829. BEGIN
  830.     TR_PrintText(project,rp,pas2c(txt),x,y,width,flags);
  831. END;
  832.  
  833. FUNCTION TR_TextHeight(project : pTR_Project; txt : String; flags : ULONG) : ULONG;
  834. BEGIN
  835.     TR_TextHeight :=  TR_TextHeight(project,pas2c(txt),flags);
  836. END;
  837.  
  838. FUNCTION TR_TextWidth(project : pTR_Project; txt : String; flags : ULONG) : ULONG;
  839. BEGIN
  840.     TR_TextWidth := TR_TextWidth(project,pas2c(txt),flags);
  841. END;
  842.  
  843. {$endif}
  844.  
  845. procedure TR_Disable(p : pTR_Project; id : Longint);
  846. begin
  847.     TR_SetAttribute(p,id, TRAT_Disabled,0);
  848. end;
  849.  
  850. procedure TR_Enable(p : pTR_Project; id : Longint);
  851. begin
  852.     TR_SetAttribute(p,id,TRAT_Disabled,1);
  853. end;
  854.  
  855. function TR_GetCheckBox(p : pTR_Project; id : Longint): boolean;
  856. var
  857.     temp : Longint;
  858. begin
  859.     temp := TR_GetAttribute(p,id,TRAT_Value);
  860.     if temp = 0 then TR_GetCheckBox := false
  861.     else TR_GetCheckBox := true;
  862. end;
  863.  
  864. function TR_GetSTRPTR(p : pTR_Project; id : Longint): PChar;
  865. var
  866.     temp : Longint;
  867. begin
  868.     temp := TR_GetAttribute(p,id,0);
  869.     TR_GetSTRPTR := PChar(Pointer(temp));
  870. end;
  871.  
  872. function TR_GetValue(p : pTR_Project; gadid : Longint): Longint;
  873. begin
  874.    TR_GetValue := TR_GetAttribute(p,gadid,TRAT_Value);
  875. end;
  876.  
  877. procedure TR_SetCheckBox(p : pTR_Project; id : Longint; onoff : boolean);
  878. begin
  879.     TR_SetAttribute(p,id,TRAT_Value,Longint(byte(onoff)));
  880. end;
  881.  
  882. procedure TR_SetString(p : pTR_Project; id : Longint; txt : PChar);
  883. begin
  884.     TR_SetAttribute(p,id,0,Longint(txt));
  885. end;
  886.  
  887. procedure TR_SetText(p : pTR_Project; id : Longint; txt : PChar);
  888. begin
  889.     TR_SetAttribute(p,id,TRAT_Text,Longint(txt));
  890. end;
  891.  
  892. procedure TR_SetValue(p : pTR_Project; id : Longint; value : Longint);
  893. begin
  894.     TR_SetAttribute(p,id,TRAT_Value,value);
  895. end;
  896.  
  897. procedure TR_SetWindowTitle(p : pTR_Project; thetitle : PChar);
  898. begin
  899.     TR_SetAttribute(p,0,TRWI_Title,Longint(thetitle));
  900. end;
  901.  
  902. procedure TR_UpdateListView(p : pTR_Project; gadid : Longint; thelist: pList);
  903. begin
  904.     TR_SetAttribute(p,gadid,0,Longint(thelist));
  905. end;
  906.  
  907. PROCEDURE TR_AreaFill(project : pTR_Project; rp : pRastPort; left : ULONG; top : 
  908. ULONG; right : ULONG; bottom : ULONG; typ : ULONG; dummy : POINTER);
  909. BEGIN
  910.   ASM
  911.     MOVE.L  A6,-(A7)
  912.     MOVEA.L project,A0
  913.     MOVEA.L rp,A1
  914.     MOVE.L  left,D0
  915.     MOVE.L  top,D1
  916.     MOVE.L  right,D2
  917.     MOVE.L  bottom,D3
  918.     MOVE.L  typ,D4
  919.     MOVEA.L dummy,A2
  920.     MOVEA.L TritonBase,A6
  921.     JSR -228(A6)
  922.     MOVEA.L (A7)+,A6
  923.   END;
  924. END;
  925.  
  926. FUNCTION TR_AutoRequest(app : pTR_App; lockproject : pTR_Project; wintags : pTagItem) 
  927. : ULONG;
  928. BEGIN
  929.   ASM
  930.     MOVE.L  A6,-(A7)
  931.     MOVEA.L app,A1
  932.     MOVEA.L lockproject,A0
  933.     MOVEA.L wintags,A2
  934.     MOVEA.L TritonBase,A6
  935.     JSR -084(A6)
  936.     MOVEA.L (A7)+,A6
  937.     MOVE.L  D0,@RESULT
  938.   END;
  939. END;
  940.  
  941. PROCEDURE TR_CloseProject(project : pTR_Project);
  942. BEGIN
  943.   ASM
  944.     MOVE.L  A6,-(A7)
  945.     MOVEA.L project,A0
  946.     MOVEA.L TritonBase,A6
  947.     JSR -036(A6)
  948.     MOVEA.L (A7)+,A6
  949.   END;
  950. END;
  951.  
  952. PROCEDURE TR_CloseWindowSafely(window : pWindow);
  953. BEGIN
  954.   ASM
  955.     MOVE.L  A6,-(A7)
  956.     MOVEA.L window,A0
  957.     MOVEA.L TritonBase,A6
  958.     JSR -126(A6)
  959.     MOVEA.L (A7)+,A6
  960.   END;
  961. END;
  962.  
  963. FUNCTION TR_CreateApp(apptags : pTagItem) : pTR_App;
  964. BEGIN
  965.   ASM
  966.     MOVE.L  A6,-(A7)
  967.     MOVEA.L apptags,A1
  968.     MOVEA.L TritonBase,A6
  969.     JSR -096(A6)
  970.     MOVEA.L (A7)+,A6
  971.     MOVE.L  D0,@RESULT
  972.   END;
  973. END;
  974.  
  975. FUNCTION TR_CreateMsg(app : pTR_App) : pTR_Message;
  976. BEGIN
  977.   ASM
  978.     MOVE.L  A6,-(A7)
  979.     MOVEA.L app,A1
  980.     MOVEA.L TritonBase,A6
  981.     JSR -234(A6)
  982.     MOVEA.L (A7)+,A6
  983.     MOVE.L  D0,@RESULT
  984.   END;
  985. END;
  986.  
  987. PROCEDURE TR_DeleteApp(app : pTR_App);
  988. BEGIN
  989.   ASM
  990.     MOVE.L  A6,-(A7)
  991.     MOVEA.L app,A1
  992.     MOVEA.L TritonBase,A6
  993.     JSR -102(A6)
  994.     MOVEA.L (A7)+,A6
  995.   END;
  996. END;
  997.  
  998. FUNCTION TR_DoMethod(obj : pTROD_Object; messageid : ULONG; data : POINTER) : ULONG;
  999. BEGIN
  1000.   ASM
  1001.     MOVE.L  A6,-(A7)
  1002.     MOVEA.L obj,A0
  1003.     MOVE.L  messageid,D0
  1004.     MOVEA.L data,A1
  1005.     MOVEA.L TritonBase,A6
  1006.     JSR -216(A6)
  1007.     MOVEA.L (A7)+,A6
  1008.     MOVE.L  D0,@RESULT
  1009.   END;
  1010. END;
  1011.  
  1012. FUNCTION TR_DoMethodClass(obj : pTROD_Object; messageid : ULONG; data : POINTER; 
  1013. trclass : pTR_Class) : ULONG;
  1014. BEGIN
  1015.   ASM
  1016.     MOVE.L  A6,-(A7)
  1017.     MOVEA.L obj,A0
  1018.     MOVE.L  messageid,D0
  1019.     MOVEA.L data,A1
  1020.     MOVEA.L trclass,A2
  1021.     MOVEA.L TritonBase,A6
  1022.     JSR -222(A6)
  1023.     MOVEA.L (A7)+,A6
  1024.     MOVE.L  D0,@RESULT
  1025.   END;
  1026. END;
  1027.  
  1028. PROCEDURE TR_DrawFrame(project : pTR_Project; rp : pRastPort; left : WORD; top : WORD; 
  1029. width : WORD; height : WORD; typ : WORD; inverted : BOOLEAN);
  1030. BEGIN
  1031.   ASM
  1032.     MOVE.L  A6,-(A7)
  1033.     MOVEA.L project,A0
  1034.     MOVEA.L rp,A1
  1035.     MOVE.L  left,D1
  1036.     MOVE.L  top,D2
  1037.     MOVE.L  width,D3
  1038.     MOVE.L  height,D4
  1039.     MOVE.L  typ,D0
  1040.     MOVE.L  inverted,D5
  1041.     MOVEA.L TritonBase,A6
  1042.     JSR -174(A6)
  1043.     MOVEA.L (A7)+,A6
  1044.   END;
  1045. END;
  1046.  
  1047. FUNCTION TR_EasyRequest(app : pTR_App; bodyfmt : pCHAR; gadfmt : pCHAR; taglist : 
  1048. pTagItem) : ULONG;
  1049. BEGIN
  1050.   ASM
  1051.     MOVE.L  A6,-(A7)
  1052.     MOVEA.L app,A1
  1053.     MOVEA.L bodyfmt,A2
  1054.     MOVEA.L gadfmt,A3
  1055.     MOVEA.L taglist,A0
  1056.     MOVEA.L TritonBase,A6
  1057.     JSR -090(A6)
  1058.     MOVEA.L (A7)+,A6
  1059.     MOVE.L  D0,@RESULT
  1060.   END;
  1061. END;
  1062.  
  1063. FUNCTION TR_FirstOccurance(ch : BYTE; str : pCHAR) : LONGINT;
  1064. BEGIN
  1065.   ASM
  1066.     MOVE.L  A6,-(A7)
  1067.     MOVE.L  ch,D0
  1068.     MOVEA.L str,A0
  1069.     MOVEA.L TritonBase,A6
  1070.     JSR -042(A6)
  1071.     MOVEA.L (A7)+,A6
  1072.     MOVE.L  D0,@RESULT
  1073.   END;
  1074. END;
  1075.  
  1076. FUNCTION TR_FrameBorderHeight(project : pTR_Project; typ : WORD) : ULONG;
  1077. BEGIN
  1078.   ASM
  1079.     MOVE.L  A6,-(A7)
  1080.     MOVEA.L project,A0
  1081.     MOVE.L  typ,D0
  1082.     MOVEA.L TritonBase,A6
  1083.     JSR -186(A6)
  1084.     MOVEA.L (A7)+,A6
  1085.     MOVE.L  D0,@RESULT
  1086.   END;
  1087. END;
  1088.  
  1089. FUNCTION TR_FrameBorderWidth(project : pTR_Project; typ : WORD) : ULONG;
  1090. BEGIN
  1091.   ASM
  1092.     MOVE.L  A6,-(A7)
  1093.     MOVEA.L project,A0
  1094.     MOVE.L  typ,D0
  1095.     MOVEA.L TritonBase,A6
  1096.     JSR -180(A6)
  1097.     MOVEA.L (A7)+,A6
  1098.     MOVE.L  D0,@RESULT
  1099.   END;
  1100. END;
  1101.  
  1102. FUNCTION TR_GetAttribute(project : pTR_Project; ID : ULONG; attribute : ULONG) : 
  1103. ULONG;
  1104. BEGIN
  1105.   ASM
  1106.     MOVE.L  A6,-(A7)
  1107.     MOVEA.L project,A0
  1108.     MOVE.L  ID,D0
  1109.     MOVE.L  attribute,D1
  1110.     MOVEA.L TritonBase,A6
  1111.     JSR -066(A6)
  1112.     MOVEA.L (A7)+,A6
  1113.     MOVE.L  D0,@RESULT
  1114.   END;
  1115. END;
  1116.  
  1117. FUNCTION TR_GetErrorString(num : WORD) : pCHAR;
  1118. BEGIN
  1119.   ASM
  1120.     MOVE.L  A6,-(A7)
  1121.     MOVE.L  num,D0
  1122.     MOVEA.L TritonBase,A6
  1123.     JSR -054(A6)
  1124.     MOVEA.L (A7)+,A6
  1125.     MOVE.L  D0,@RESULT
  1126.   END;
  1127. END;
  1128.  
  1129. FUNCTION TR_GetLastError(app : pTR_App) : WORD;
  1130. BEGIN
  1131.   ASM
  1132.     MOVE.L  A6,-(A7)
  1133.     MOVEA.L app,A1
  1134.     MOVEA.L TritonBase,A6
  1135.     JSR -132(A6)
  1136.     MOVEA.L (A7)+,A6
  1137.     MOVE.L  D0,@RESULT
  1138.   END;
  1139. END;
  1140.  
  1141. FUNCTION TR_GetMsg(app : pTR_App) : pTR_Message;
  1142. BEGIN
  1143.   ASM
  1144.     MOVE.L  A6,-(A7)
  1145.     MOVEA.L app,A1
  1146.     MOVEA.L TritonBase,A6
  1147.     JSR -108(A6)
  1148.     MOVEA.L (A7)+,A6
  1149.     MOVE.L  D0,@RESULT
  1150.   END;
  1151. END;
  1152.  
  1153. FUNCTION TR_GetPen(project : pTR_Project; pentype : ULONG; pendata : ULONG) : ULONG;
  1154. BEGIN
  1155.   ASM
  1156.     MOVE.L  A6,-(A7)
  1157.     MOVEA.L project,A0
  1158.     MOVE.L  pentype,D0
  1159.     MOVE.L  pendata,D1
  1160.     MOVEA.L TritonBase,A6
  1161.     JSR -210(A6)
  1162.     MOVEA.L (A7)+,A6
  1163.     MOVE.L  D0,@RESULT
  1164.   END;
  1165. END;
  1166.  
  1167. PROCEDURE TR_LockProject(project : pTR_Project);
  1168. BEGIN
  1169.   ASM
  1170.     MOVE.L  A6,-(A7)
  1171.     MOVEA.L project,A0
  1172.     MOVEA.L TritonBase,A6
  1173.     JSR -072(A6)
  1174.     MOVEA.L (A7)+,A6
  1175.   END;
  1176. END;
  1177.  
  1178. FUNCTION TR_LockScreen(project : pTR_Project) : pScreen;
  1179. BEGIN
  1180.   ASM
  1181.     MOVE.L  A6,-(A7)
  1182.     MOVEA.L project,A0
  1183.     MOVEA.L TritonBase,A6
  1184.     JSR -138(A6)
  1185.     MOVEA.L (A7)+,A6
  1186.     MOVE.L  D0,@RESULT
  1187.   END;
  1188. END;
  1189.  
  1190. FUNCTION TR_NumOccurances(ch : BYTE; str : pCHAR) : LONGINT;
  1191. BEGIN
  1192.   ASM
  1193.     MOVE.L  A6,-(A7)
  1194.     MOVE.L  ch,D0
  1195.     MOVEA.L str,A0
  1196.     MOVEA.L TritonBase,A6
  1197.     JSR -048(A6)
  1198.     MOVEA.L (A7)+,A6
  1199.     MOVE.L  D0,@RESULT
  1200.   END;
  1201. END;
  1202.  
  1203. FUNCTION TR_ObtainWindow(project : pTR_Project) : pWindow;
  1204. BEGIN
  1205.   ASM
  1206.     MOVE.L  A6,-(A7)
  1207.     MOVEA.L project,A0
  1208.     MOVEA.L TritonBase,A6
  1209.     JSR -150(A6)
  1210.     MOVEA.L (A7)+,A6
  1211.     MOVE.L  D0,@RESULT
  1212.   END;
  1213. END;
  1214.  
  1215. FUNCTION TR_OpenProject(app : pTR_App; taglist : pTagItem) : pTR_Project;
  1216. BEGIN
  1217.   ASM
  1218.     MOVE.L  A6,-(A7)
  1219.     MOVEA.L app,A1
  1220.     MOVEA.L taglist,A0
  1221.     MOVEA.L TritonBase,A6
  1222.     JSR -030(A6)
  1223.     MOVEA.L (A7)+,A6
  1224.     MOVE.L  D0,@RESULT
  1225.   END;
  1226. END;
  1227.  
  1228. PROCEDURE TR_PrintText(project : pTR_Project; rp : pRastPort; txt : pCHAR; x : ULONG; 
  1229. y : ULONG; width : ULONG; flags : ULONG);
  1230. BEGIN
  1231.   ASM
  1232.     MOVE.L  A6,-(A7)
  1233.     MOVEA.L project,A0
  1234.     MOVEA.L rp,A1
  1235.     MOVEA.L txt,A2
  1236.     MOVE.L  x,D1
  1237.     MOVE.L  y,D2
  1238.     MOVE.L  width,D3
  1239.     MOVE.L  flags,D0
  1240.     MOVEA.L TritonBase,A6
  1241.     JSR -204(A6)
  1242.     MOVEA.L (A7)+,A6
  1243.   END;
  1244. END;
  1245.  
  1246. PROCEDURE TR_ReleaseWindow(window : pWindow);
  1247. BEGIN
  1248.   ASM
  1249.     MOVE.L  A6,-(A7)
  1250.     MOVEA.L window,A0
  1251.     MOVEA.L TritonBase,A6
  1252.     JSR -156(A6)
  1253.     MOVEA.L (A7)+,A6
  1254.   END;
  1255. END;
  1256.  
  1257. PROCEDURE TR_ReplyMsg(message : pTR_Message);
  1258. BEGIN
  1259.   ASM
  1260.     MOVE.L  A6,-(A7)
  1261.     MOVEA.L message,A1
  1262.     MOVEA.L TritonBase,A6
  1263.     JSR -114(A6)
  1264.     MOVEA.L (A7)+,A6
  1265.   END;
  1266. END;
  1267.  
  1268. FUNCTION TR_SendMessage(project : pTR_Project; objectid : ULONG; messageid : ULONG; 
  1269. messagedata : POINTER) : ULONG;
  1270. BEGIN
  1271.   ASM
  1272.     MOVE.L  A6,-(A7)
  1273.     MOVEA.L project,A0
  1274.     MOVE.L  objectid,D0
  1275.     MOVE.L  messageid,D1
  1276.     MOVEA.L messagedata,A1
  1277.     MOVEA.L TritonBase,A6
  1278.     JSR -162(A6)
  1279.     MOVEA.L (A7)+,A6
  1280.     MOVE.L  D0,@RESULT
  1281.   END;
  1282. END;
  1283.  
  1284. PROCEDURE TR_SetAttribute(project : pTR_Project; ID : ULONG; attribute : ULONG; value 
  1285. : ULONG);
  1286. BEGIN
  1287.   ASM
  1288.     MOVE.L  A6,-(A7)
  1289.     MOVEA.L project,A0
  1290.     MOVE.L  ID,D0
  1291.     MOVE.L  attribute,D1
  1292.     MOVE.L  value,D2
  1293.     MOVEA.L TritonBase,A6
  1294.     JSR -060(A6)
  1295.     MOVEA.L (A7)+,A6
  1296.   END;
  1297. END;
  1298.  
  1299. FUNCTION TR_TextHeight(project : pTR_Project; txt : pCHAR; flags : ULONG) : ULONG;
  1300. BEGIN
  1301.   ASM
  1302.     MOVE.L  A6,-(A7)
  1303.     MOVEA.L project,A0
  1304.     MOVEA.L txt,A2
  1305.     MOVE.L  flags,D0
  1306.     MOVEA.L TritonBase,A6
  1307.     JSR -198(A6)
  1308.     MOVEA.L (A7)+,A6
  1309.     MOVE.L  D0,@RESULT
  1310.   END;
  1311. END;
  1312.  
  1313. FUNCTION TR_TextWidth(project : pTR_Project; txt : pCHAR; flags : ULONG) : ULONG;
  1314. BEGIN
  1315.   ASM
  1316.     MOVE.L  A6,-(A7)
  1317.     MOVEA.L project,A0
  1318.     MOVEA.L txt,A2
  1319.     MOVE.L  flags,D0
  1320.     MOVEA.L TritonBase,A6
  1321.     JSR -192(A6)
  1322.     MOVEA.L (A7)+,A6
  1323.     MOVE.L  D0,@RESULT
  1324.   END;
  1325. END;
  1326.  
  1327. PROCEDURE TR_UnlockProject(project : pTR_Project);
  1328. BEGIN
  1329.   ASM
  1330.     MOVE.L  A6,-(A7)
  1331.     MOVEA.L project,A0
  1332.     MOVEA.L TritonBase,A6
  1333.     JSR -078(A6)
  1334.     MOVEA.L (A7)+,A6
  1335.   END;
  1336. END;
  1337.  
  1338. PROCEDURE TR_UnlockScreen(screen : pScreen);
  1339. BEGIN
  1340.   ASM
  1341.     MOVE.L  A6,-(A7)
  1342.     MOVEA.L screen,A0
  1343.     MOVEA.L TritonBase,A6
  1344.     JSR -144(A6)
  1345.     MOVEA.L (A7)+,A6
  1346.   END;
  1347. END;
  1348.  
  1349. FUNCTION TR_Wait(app : pTR_App; otherbits : ULONG) : ULONG;
  1350. BEGIN
  1351.   ASM
  1352.     MOVE.L  A6,-(A7)
  1353.     MOVEA.L app,A1
  1354.     MOVE.L  otherbits,D0
  1355.     MOVEA.L TritonBase,A6
  1356.     JSR -120(A6)
  1357.     MOVEA.L (A7)+,A6
  1358.     MOVE.L  D0,@RESULT
  1359.   END;
  1360. END;
  1361.  
  1362. PROCEDURE CloseTritonLibrary;
  1363. BEGIN
  1364.      ExitProc := triton_exit;
  1365.      if TritonBase <> nil then begin
  1366.         CloseLibrary(TritonBase);
  1367.         TritonBase := nil;
  1368.      end;
  1369. END;
  1370.                                                            
  1371. const
  1372.     VERSION : string[1] = '6';
  1373.  
  1374. BEGIN
  1375.     TritonBase := nil;
  1376.     TritonBase := OpenLibrary(TRITONNAME,TRITONVERSION);
  1377.     IF TritonBase <> NIL THEN begin
  1378.         triton_exit := ExitProc;
  1379.         ExitProc := @CloseTritonLibrary;
  1380.     end else begin
  1381.          MessageBox('FPC Pascal Error',
  1382.                     'Can''t open triton.library version ' + 
  1383.                     VERSION +
  1384.                     chr(10) + 
  1385.                     'Deallocating resources and closing down',
  1386.                     'Oops');
  1387.         halt(20);
  1388.     end;
  1389.  
  1390.  
  1391. END. (* UNIT TRITON *)
  1392.  
  1393.  
  1394.  
  1395.